home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Meeting Pearls 4
/
Meeting Pearls Vol. IV (1996)(GTI - Schatztruhe)[!].iso
/
Contrib
/
MPHelper
/
metatyper.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
1996-10-20
|
5KB
|
148 lines
/* $VER: metatyper.rexx 1.1 (10.10.96)
*/
/* (C) by Martin Steigerwald */
OPTIONS RESULTS
IF ~SHOW('L', "rexxsupport.library") THEN ADDLIB('rexxsupport.library', 0, -30, 0)
IF ~SHOW('L', "rexxdossupport.library") THEN ADDLIB('rexxdossupport.library', 0, -30,0)
ADDRESS COMMAND
'copy c:doicon ram:'
'copy c:dmcontrol ram:'
ADDRESS
browsedir("")
ADDRESS COMMAND
'delete ram:doicon ram:dmcontrol t:mt-datatype t:mt-checkinfo QUIET'
ADDRESS
EXIT
browsedir: PROCEDURE
PARSE ARG dir
browsefiles(dir)
dirlist=SHOWDIR(dir, 'D', ':'); ende=0; istart=1;
IF dirlist ~== "" THEN DO
DO UNTIL ende=1
i=INDEX(dirlist, ':', istart);
IF i>0 THEN DO
nextdir=SUBSTR(dirlist, istart, i-istart); istart=i+1
END
ELSE DO
nextdir=SUBSTR(dirlist, istart); ende=1
END
IF dir ~== "" THEN nextdir=dir || "/" || nextdir
browsedir(nextdir)
END
END
RETURN 0
browsefiles: PROCEDURE
PARSE ARG dir
SAY "prüfe" dir
filelist=SHOWDIR(dir, 'A', ':');
ohneinfolist=""; ende=0; istart=1; oidateien="";
lfilelist=LENGTH(filelist)
IF filelist ~=="" THEN DO
DO UNTIL ende=1
i=INDEX(filelist, ':', istart);
IF i>0 THEN DO
nextfile=SUBSTR(filelist, istart, i-istart); istart=i+1
END
ELSE DO
nextfile=SUBSTR(filelist, istart); ende=1
END
IF RIGHT(UPPER(nextfile),5) == '.INFO' THEN DO
ohneinfo=LEFT(nextfile, LENGTH(nextfile)-5)
IF dir ~== "" THEN pfad=dir || "/"
ELSE pfad=""
checkfile(pfad || ohneinfo)
END
END
END
RETURN 0
checkfile: PROCEDURE
PARSE ARG ohneinfo
test=0 /* wenn gesetzt, dann sagt sie nur, was sie tun wuerde */
dt=''
IF EXISTS(pfad || ohneinfo) THEN DO
IF INDEX(STATEF(ohneinfo), "FILE") ~== 0 THEN DO
ADDRESS COMMAND 'dmcontrol testfiles "' || ohneinfo || '" >t:mt-datatype'
OPEN(fh1, 't:mt-datatype', 'read'); dt=READLN(fh1); CLOSE(fh1);
IF INDEX(dt, 'Error') == 0 THEN DO
dt=SUBSTR(dt, INDEX(dt, '<<')+3); dt=TRIM(LEFT(dt, INDEX(dt, '>>')-1))
END
END
END
no=0; metatype=''
SELECT
WHEN RIGHT(UPPER(ohneinfo), 5) == '.FONT'
THEN no=1
OTHERWISE NOOP
END
IF no=0 THEN DO
ADDRESS COMMAND 'DoIcon DT CHECKTOOLTYPEVALUE=METATYPE "' || ohneinfo || '" >t:mt-checkinfo'
OPEN(fh1, 't:mt-checkinfo', 'read')
olddeftoolorig=WORD(READLN(fh1),2); olddeftool=UPPER(olddeftoolorig);
metatypeda=READLN(fh1);
CLOSE(fh1)
IF INDEX(metatypeda, 'METATYPE') == 0 THEN DO
SELECT
WHEN dt='ANIM-IFF' THEN metatype='ANIM'
WHEN dt='ASCII-AmigaGuide' THEN metatype='GUIDE'
WHEN dt='ASCII-REXX' THEN metatype='REXX'
WHEN dt='ASCII-Text' THEN metatype='TEXT'
WHEN dt='GFX-GIF' THEN metatype='GIF'
WHEN dt='GFX-IFF' THEN metatype='ILBM'
WHEN dt='GFX-JPEG' THEN metatype='JPEG'
WHEN dt='SMPL-IFF' THEN metatype='8SVX'
OTHERWISE NOOP
END
i=INDEX(ohneinfo, '.'); ext='';
IF i ~== 0 THEN DO
ext=UPPER(SUBSTR(ohneinfo,INDEX(ohneinfo,'.')+1))
END
SELECT
WHEN INDEX(olddeftool, 'ICONX') ~==0 THEN metatype='ICONX'
WHEN INDEX(olddeftool, 'INSTALLER') ~==0 THEN metatype='INST'
WHEN INDEX(olddeftool, 'SHOWDVI') ~==0 THEN metatype='DVI'
/* Die ARexx-Skript-Erkennung von Datamaster suckt */
WHEN INDEX(olddeftool, 'RX') ~==0 THEN metatype='REXX'
WHEN ext == 'REXX' THEN metatype='REXX'
WHEN ext == 'DVI' THEN metatype='DVI'
WHEN ((ext == 'C') | (ext == 'H') | (ext == 'CT') | (ext == 'CD') | (ext == 'I') | (ext == 'ASM'))
THEN metatype='SOURCE'
OTHERWISE NOOP
END
IF metatype ~== '' THEN DO
SELECT
WHEN INDEX(olddeftool, 'MOUNT') ~==0 THEN no=1
WHEN INDEX(olddeftool, 'ADDDATATYPES') ~== 0 THEN no=1
OTHERWISE NOOP
END
IF no==0 THEN DO
SAY RIGHT(ohneinfo,50) " --> " || metatype
IF test==0 THEN DO
ADDRESS COMMAND 'DoIcon "' || ohneinfo || '" NEWDEFAULTTOOL=":C/MetaTool" ADDTOOLTYPE="METATYPE=' || metatype || '"'
END
END
END
END
ELSE DO
IF olddeftoolorig ~== ":C/MetaTool" THEN DO
/* der C:/MetaTool Check ;) */
SAY RIGHT(ohneinfo,50) " --> :C/MetaTool ;)))"
IF test==0 THEN DO
ADDRESS COMMAND 'DoIcon "' || ohneinfo || '" NEWDEFAULTTOOL=":C/MetaTool"'
END
END
END
END
RETURN 0